﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zeus.Comunicaciones.Componentes.AccesoDatos;

namespace Zeus.Comunicaciones.Componentes
{
    public interface IAutenticacion
    {
        /// <summary>
        /// verifica la validez de un usuario y devuelve un token de autorizacion
        /// </summary>
        /// <param name="user"></param>
        /// <param name="pass"></param>
        /// <returns></returns>
        string Autenticar(string user, string pass);

        /// <summary>
        /// Valida que el token exista, tenga permisos y no esté vencido
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        bool ValidarToken(string token);

        /// <summary>
        /// Valida los privilegios a partir de un token o usuario
        /// </summary>
        /// <param name="privilegio"></param>
        /// <param name="token"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        bool ValidarPrivilegios(Privilegios privilegio, string token = null, string user = null);
    }
}
